using System.IO;

namespace FileSystemControls.Support
{
    public class DirectoryAlreadyExistsException : IOException
    {
        private DirectoryInfo _OtherDirectory;

        public DirectoryInfo OtherDirectory
        {
            get
            {
                return _OtherDirectory;
            }
        }

        public DirectoryAlreadyExistsException(DirectoryInfo argOtherDirectory)
        {
            _OtherDirectory = argOtherDirectory;
        }
    }

    public class FileAlreadyExistsException : IOException
    {
        private FileInfo _OtherFile;

        public FileInfo OtherFile
        {
            get
            {
                return _OtherFile;
            }
        }

        public FileAlreadyExistsException(FileInfo argOtherFile)
        {
            _OtherFile = argOtherFile;
        }
    }

    public class PathMismatchException : IOException
    {
        public PathMismatchException()
        {
        }

        public PathMismatchException(string argText)
            : base(argText)
        {
        }
    }

    public class FileIsReadOnlyException : IOException
    {
        private FileInfo _ReadonlyFile;

        public FileInfo ReadonlyFile
        {
            get
            {
                return _ReadonlyFile;
            }
        }

        public FileIsReadOnlyException(FileInfo argReadonlyFile)
        {
            _ReadonlyFile = argReadonlyFile;
        }
    }

    public class FileIsSystemException : IOException
    {
        private FileInfo _SystemFile;

        public FileInfo SystemFile
        {
            get
            {
                return _SystemFile;
            }
        }

        public FileIsSystemException(FileInfo argSystemFile)
        {
            _SystemFile = argSystemFile;
        }
    }

    public class FileIsOfflineException : IOException
    {
        private FileInfo _OfflineFile;

        public FileInfo OfflineFile
        {
            get
            {
                return _OfflineFile;
            }
        }

        public FileIsOfflineException(FileInfo argOfflineFile)
        {
            _OfflineFile = argOfflineFile;
        }
    }

    public class FileExistsException : IOException { }
}
